package com.xyz.practice.jdbc.databasemetadata;

import java.io.Serializable;


public class ProcedureColumn implements Serializable {

  private static final long serialVersionUID = 1886695116931613838L;

  ProcedureColumn() {

  }
  /**
   * procedure catalog (may be null)
   */
  private String procedureCat;
  /**
   * procedure schema (may be null)
   */
  private String procedureSchem;
  /**
   * procedure name
   */
  private String procedureName;
  /**
   * column/parameter name
   */
  private String columnName;
  /**
   * kind of column/parameter:
   * procedureColumnUnknown - nobody knows 
   * procedureColumnIn - IN parameter 
   * procedureColumnInOut - INOUT parameter 
   * procedureColumnOut - OUT parameter 
   * procedureColumnReturn - procedure return value 
   * procedureColumnResult - result column in ResultSet 
   */
  private short columnType;
  /**
   * SQL type from java.sql.Types
   */
  private int dataType;
  /**
   * SQL type name, for a UDT type the type name is fully qualified
   */
  private String typeName;
  /**
   * precision
   */
  private int precision;
  /**
   * length in bytes of data
   */
  private int length;
  /**
   * scale - null is returned for data types where SCALE is not applicable
   */
  private short scale;
  /**
   * radix 
   */
  private short radix;
  /**
   * can it contain NULL. 
   * procedureNoNulls - does not allow NULL values 
   * procedureNullable - allows NULL values 
   * procedureNullableUnknown - nullability unknown 
   */
  private short nullable;
  /**
   * comment describing parameter/column
   */
  private String remarks;
  /**
   * default value for the column, which should be interpreted as a string when the value is enclosed in single quotes (may be null) 
   * The string NULL (not enclosed in quotes) - if NULL was specified as the default value 
   * TRUNCATE (not enclosed in quotes) - if the specified default value cannot be represented without truncation 
   * NULL - if a default value was not specified 
   */
  private String columnDef;
  /**
   * reserved for future use
   */
  private int sqlDataType;
  /**
   * reserved for future use
   */
  private int sqlDatetimeSub;
  /**
   * the maximum length of binary and character based columns. For any other datatype the returned value is a NULL 
   */
  private int charOctetLength;
  /**
   * the ordinal position, starting from 1, for the input and output parameters for a procedure. A value of 0 is returned if this row describes the procedure's return value. For result set columns, it is the ordinal position of the column in the result set starting from 1. If there are multiple result sets, the column ordinal positions are implementation defined.
   */
  private int ordinalPosition;
  /**
   * ISO rules are used to determine the nullability for a column. 
   * YES --- if the parameter can include NULLs 
   * NO --- if the parameter cannot include NULLs 
   * empty string --- if the nullability for the parameter is unknown
   */
  private String isNullable;
  /**
   * the name which uniquely identifies this procedure within its schema.
   */
  private String specificName;

  String getProcedureCat() {
    return procedureCat;
  }

  void setProcedureCat( String procedureCat ) {
    this.procedureCat = procedureCat;
  }

  String getProcedureSchem() {
    return procedureSchem;
  }

  void setProcedureSchem( String procedureSchem ) {
    this.procedureSchem = procedureSchem;
  }

  String getProcedureName() {
    return procedureName;
  }

  void setProcedureName( String procedureName ) {
    this.procedureName = procedureName;
  }

  String getColumnName() {
    return columnName;
  }

  void setColumnName( String columnName ) {
    this.columnName = columnName;
  }

  short getColumnType() {
    return columnType;
  }

  void setColumnType( short columnType ) {
    this.columnType = columnType;
  }

  int getDataType() {
    return dataType;
  }

  void setDataType( int dataType ) {
    this.dataType = dataType;
  }

  String getTypeName() {
    return typeName;
  }

  void setTypeName( String typeName ) {
    this.typeName = typeName;
  }

  int getPrecision() {
    return precision;
  }

  void setPrecision( int precision ) {
    this.precision = precision;
  }

  int getLength() {
    return length;
  }

  void setLength( int length ) {
    this.length = length;
  }

  short getScale() {
    return scale;
  }

  void setScale( short scale ) {
    this.scale = scale;
  }

  short getRadix() {
    return radix;
  }

  void setRadix( short radix ) {
    this.radix = radix;
  }

  short getNullable() {
    return nullable;
  }

  void setNullable( short nullable ) {
    this.nullable = nullable;
  }

  String getRemarks() {
    return remarks;
  }

  void setRemarks( String remarks ) {
    this.remarks = remarks;
  }

  String getColumnDef() {
    return columnDef;
  }

  void setColumnDef( String columnDef ) {
    this.columnDef = columnDef;
  }

  int getSqlDataType() {
    return sqlDataType;
  }

  void setSqlDataType( int sqlDataType ) {
    this.sqlDataType = sqlDataType;
  }

  int getSqlDatetimeSub() {
    return sqlDatetimeSub;
  }

  void setSqlDatetimeSub( int sqlDatetimeSub ) {
    this.sqlDatetimeSub = sqlDatetimeSub;
  }

  int getCharOctetLength() {
    return charOctetLength;
  }

  void setCharOctetLength( int charOctetLength ) {
    this.charOctetLength = charOctetLength;
  }

  int getOrdinalPosition() {
    return ordinalPosition;
  }

  void setOrdinalPosition( int ordinalPosition ) {
    this.ordinalPosition = ordinalPosition;
  }

  String getIsNullable() {
    return isNullable;
  }

  void setIsNullable( String isNullable ) {
    this.isNullable = isNullable;
  }

  String getSpecificName() {
    return specificName;
  }

  void setSpecificName( String specificName ) {
    this.specificName = specificName;
  }


}
